package com.ruoyi.digest.mapper;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

import com.ruoyi.digest.domain.HsGeneratedText;

/**
 * 热搜主题AI生成文本Mapper接口
 * 
 * @author lzk
 * @date 2025-06-16
 */
public interface HsGeneratedTextMapper 
{
    /**
     * 查询热搜主题AI生成文本
     * 
     * @param id 热搜主题AI生成文本主键
     * @return 热搜主题AI生成文本
     */
    public HsGeneratedText selectHsGeneratedTextById(Long id);

    /**
     * 查询热搜主题AI生成文本列表
     * 
     * @param hsGeneratedText 热搜主题AI生成文本
     * @return 热搜主题AI生成文本集合
     */
    public List<HsGeneratedText> selectHsGeneratedTextList(HsGeneratedText hsGeneratedText);

    /**
     * 新增热搜主题AI生成文本
     * 
     * @param hsGeneratedText 热搜主题AI生成文本
     * @return 结果
     */
    public int insertHsGeneratedText(HsGeneratedText hsGeneratedText);

    /**
     * 修改热搜主题AI生成文本
     * 
     * @param hsGeneratedText 热搜主题AI生成文本
     * @return 结果
     */
    public int updateHsGeneratedText(HsGeneratedText hsGeneratedText);

    /**
     * 删除热搜主题AI生成文本
     * 
     * @param id 热搜主题AI生成文本主键
     * @return 结果
     */
    public int deleteHsGeneratedTextById(Long id);

    /**
     * 批量删除热搜主题AI生成文本
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteHsGeneratedTextByIds(Long[] ids);

    /**
     * 获取未分析的主题ID列表
     *
     * @return 未分析的主题ID列表
     */
    List<Long> selectUnanalyzedTopicIds();

    /**
     * 根据主题ID获取相关文章
     *
     * @param topicId 主题ID
     * @return 文章列表
     */
    List<Map<String, Object>> selectArticlesByTopicId(Long topicId);

    /**
     * 获取所有激活的配置
     *
     * @return 激活的配置列表
     */
    List<Map<String, Object>> selectActiveAITaskConfigs();

    /**
     * 统计主题下特定配置的生成文本数量
     *
     * @param topicId 主题ID
     * @param configId 配置ID
     * @return 数量
     */
    int countByTopicIdAndConfigId(Long topicId, Long configId);

    /**
     * 根据主题ID查询文章标题、摘要内容和生成文章
     *
     * @param topicId 主题ID
     * @return 包含摘要内容和生成文章的对象
     */
    public Map<String, String> selectContentByTopicId(Long topicId);

    /**
     * 根据主题ID和创建日期查询文章标题、摘要内容和生成文章（支持多条记录）
     *
     * @param topicId 主题ID
     * @param createdDate 创建日期
     * @return 包含摘要内容和生成文章的对象列表
     */
    public List<Map<String, Object>> selectContentListByTopicIdAndDate(Long topicId, LocalDate createdDate);

    /**
     * 根据ID查询文章标题、摘要内容和生成文章
     *
     * @param id 生成文本ID
     * @return 包含摘要内容和生成文章的对象
     */
    public Map<String, String> selectContentById(Long id);

    /**
     * 查询所有有关键词的生成文本
     * @return 生成文本列表
     */
    List<HsGeneratedText> selectAllWithKeywords();
    /**
     * 根据配置ID查询配置参数
     */
    List<Map<String, Object>> selectConfigParams(Long configId);

    /**
     * 根据配置ID查询提示词模板
     */
    Map<String, Object> selectPromptTemplate(Long configId);

    List<HsGeneratedText> selectByTopicId(Long topicId);
}
